嗨!各位朋友大家好,打給後,歹嘎吼,胎尬喉,我是阿圓,一樣有請今天的one piece:
(不覺得羅很帥嗎?不覺得他很帥很帥很帥嗎?!)
這個就是今天的問題啦~
(都用他建立了無數個資料表了,現在才想問問看這個是什麼 ? )
Migrations are a feature of Active Record that allows you to evolve your database schema over time. Rather than write schema modifications in pure SQL, migrations allow you to use an easy Ruby DSL to describe changes to your tables.
- 擷取自官方文件
若不使用migration來處理可不可以?可以,自己去下SQL語法也能做到同樣的事,但是,若你是跟別人協作,請記得去提醒你同事下一樣的指令?
Rails 是利用 migration 來處理資料表結構的新增修改刪除,特色如下:
你可以使用ruby的語法寫出你想要的資料表欄位那些的,Active Record,會根據你指定給他的 database (預設是sqlite3) 去做翻譯。
這個功能就很重要了,它可以讓專案在不同電腦中保有相同的結構!
有請圖解:
這樣就不用記下你做了什麼,然後讓你同事跟著做一次。這邊是只有舉兩個人當例子,在使用migration的情況下,就算人數越來越多,大家也只要一行簡單的 rails db:migrate
而已 ?
Rails 在建立 model 的時候,會自動幫你長出一個 migration ,若有其他需求,像是要更改已建立好的 model 資料表,也可以使用 rails g migration
建立出一個 migration 的檔案,再來寫內容,不過當指令後面加上 add...to...
或 remove...from...
時,神奇的 Rails 魔法就會幫你把內容都寫好了!
至於migration裡面要怎麼寫,有請各位參考:
繼續回到我們的部落格吧,之前把管理員登入登出系統做完了,今天讓我們來著手個人檔案的部分吧!
先在 admins 的 資料表來增加一些欄位:
先製作出一個migrationrails g migration add_column_to_admins avatar email introduction experience
這邊就使用了上面所說的add...to...
,後面放上你要加的欄位,並指定型別給他(string 可省略)後...
rails 就幫我做好 migration 了!
class AddColumnToAdmins < ActiveRecord::Migration[6.0]
def change
add_column :admins, :avatar, :string
add_column :admins, :email, :string
add_column :admins, :introduction, :string
add_column :admins, :experience, :string
end
end
檢查沒有問題,就可以rails db:migrate
了
前天才大言不慚的說自己不需要預設的admin路徑,今天馬上打臉(汗? )
因為有增加欄位,之後希望可以修改,所以還是要去把那些路徑加回去:
Rails.application.routes.draw do
# # 之後指定根目錄為貼文首頁
root 'admins#index'
resource :admins, except:[:new, :create, :destory] do
collection do
get :sign_in
post :sign_in, to: 'admins#login'
delete :sign_out
end
end
end
此時的路徑:
接下來的步驟跟之前有點重複,這邊只簡單講一下大目標:
感謝各位看到這邊,我把code的部分放在git hub了,(去尋找吧!) 咳咳!可以點連結去看,若有任何建議,還請各位不吝指教!那我們明天見!